/*
 * This file contains code from "C++ Primer, Fourth Edition", by Stanley B.
 * Lippman, Jose Lajoie, and Barbara E. Moo, and is covered under the
 * copyright and warranty notices given in that book:
 * 
 * "Copyright (c) 2005 by Objectwrite, Inc., Jose Lajoie, and Barbara E. Moo."
 * 
 * 
 * "The authors and publisher have taken care in the preparation of this book,
 * but make no expressed or implied warranty of any kind and assume no
 * responsibility for errors or omissions. No liability is assumed for
 * incidental or consequential damages in connection with or arising out of the
 * use of the information or programs contained herein."
 * 
 * Permission is granted for this code to be used for educational purposes in
 * association with the book, given proper citation if and when posted or
 * reproduced.Any commercial use of this code requires the explicit written
 * permission of the publisher, Addison-Wesley Professional, a division of
 * Pearson Education, Inc. Send your request for permission, stating clearly
 * what code you would like to use, and in what specific way, to the following
 * address: 
 * 
 * 	Pearson Education, Inc.
 * 	Rights and Contracts Department
 * 	75 Arlington Street, Suite 300
 * 	Boston, MA 02216
 * 	Fax: (617) 848-7047
 */

#include <string>
#include <iostream>
using std::cout;
using std::endl;
using std::string;

char *cp = "Hiya";            // null-terminated array
char c_array[] = "World!!!!"; // null-terminated
char no_null[] = { 'H', 'i' };  // not null-terminated

string ch09s1(cp);             // ch09s1 == "Hiya"
string ch09s2(c_array, 5);     // ch09s2 == "World"
string ch09s3(c_array + 5, 4); // ch09s3 == "!!!!"
string ch09s4(no_null);        // runtime error: no_null not null-terminated
string ch09s5(no_null, 2);     // ok: ch09s5 == "Hi"
string ch09s6(ch09s1, 2);    // ch09s6 == "ya"
string ch09s7(ch09s1, 0, 2); // ch09s7 == "Hi"
string ch09s8(ch09s1, 0, 8); // ch09s8 == "Hiya"

int ctors() {
	cout << ch09s1 << '\n' << ch09s2 << '\n' << ch09s3 << '\n' << ch09s5 << '\n'
			<< ch09s6 << '\n' << ch09s7 << endl;

	{
		string ch09s1;           // ch09s1 is the empty string
		string ch09s2(5, 'a');   // ch09s2 == "aaaaa"
		string ch09s3(ch09s2);       // ch09s3 is a copy of ch09s2
		string ch09s4(ch09s3.begin(), ch09s3.begin() + ch09s3.size() / 2); // ch09s4 == "aa"
		cout << ch09s1 << '\n' << ch09s2 << '\n' << ch09s3 << '\n' << ch09s4
				<< endl;
	}

	return 0;
}

//int main(){
//	return ctors();
//}
